//
// Author: Vladimir Migashko <migashko@gmail.com>, (C) 2011
//
// Copyright: See COPYING file that comes with this distribution
//

#ifndef HITLIST_AD_EXCEPTION_HPP
#define HITLIST_AD_EXCEPTION_HPP

/** @brief Адвайс аспекта соединия 
 *
 * Универсальный обработчик исключительных ситуаций сервисов.
 * Может включаться в аспект под различными тегами (например json_error, unknown_method или http_error)
 * Закрывает соединение.
 */
struct ad_exception
{
  template<typename T>
  void operator()(T& t)
  {
    t.release();
  }

  template<typename T>
  void operator()(T& t, const char* d, size_t s)
  {
    t.release();
  }

  template<typename T>
  void operator()(T& t, const std::exception& e)
  {
    t.release();
  }
};

#endif
